getenv函数

1.获得环境变量值的函数

2.参数是环境变量名name,例如”HOME”或者”PATH”。如果环境变量存在,那么getenv函数会返回环境变量值,即value的首地址;如果环境变量不存在,那么getenv函数返回NULL

setenv函数

1.修改或添加环境变量的函数

2.将name设置成value

 

1.如果name在环境中不存在,那么很好办,在环境中添加这个新的变量就OK。

setenv函数必须在environment list中增加一个新的entry,然后动态申请存储空间来存储name=value,并且使entry指向该空间。

2.如果在环境中name已经存在,那么

(a)若overwrite非0,那么更新name的value(实质是更新环境表,指向新的value);

(b)若overwrite为0,则环境变量name不变,并且也不出错。

setenv函数不必在environment list中增加一个新的entry。当overwrite为0, 则不必改动entry的指向;当overwrite非0, 则直接使该entry指向name=value,当然该name=value也是存储在动态申请的内存里。

sigactdemo2

include <unistd.h>#include <signal.h>#include <stdio.h>

void sig_alrm( int signo ){

/do nothing/

}

unsigned int mysleep(unsigned int nsecs){

struct sigaction newact, oldact;

unsigned int unslept;

newact.sa_handler = sig_alrm;
sigemptyset( &newact.sa_mask );
newact.sa_flags = 0;
sigaction( SIGALRM, &newact, &oldact ); alarm( nsecs );
pause(); unslept = alarm ( 0 );
sigaction( SIGALRM, &oldact, NULL ); return unslept;

}

int main( void ){

while( 1 )

{

mysleep( 2 );

printf( "Two seconds passed\n" );

}

return 0;

}

每两秒输出一次

sigdemo1

include <stdio.h>#include <signal.h>void f(int); int main(){

int i;
signal( SIGINT, f );
for(i=0; i<5; i++ ){
printf("hello\n");
sleep(2);
} return 0;

}

void f(int signum) {

printf("OUCH!\n");

}

连续输出五个hello,每两个间隔是两秒

在这期间,每次输入的Ctrl+C都被处理成打印OUCH

.testbuf3.c文件

include <stdio.h>

int main()

{

    fprintf(stdout, "1234", 5);

    fprintf(stderr, "abcd", 4);

}

【关于fprintf函数】

函数原型:int fprintf(FILE *stram,const char *format,[argument]);第一个参数是文件指针,第二是输出格式,第三个是附加参数列表。也就是说,该函数会根据指定的格式(format)向输出流(stream)中写入数据(argument)。

fifo

生产者和消费者问题

forkdemo3

 

代码如下:

include <stdio.h>#include <stdlib.h>#include <unistd.h>

int main()

{

int fork_rv;

printf("Before: my pid is %d\n", getpid());

fork_rv = fork();       /* create new process   */

if ( fork_rv == -1 )        /* check for error  */
perror("fork");
else if ( fork_rv == 0 ){
printf("I am the child. my pid=%d\n", getpid()); exit(0);
}
else{
printf("I am the parent. my child is %d\n", fork_rv);
exit(0);
} return 0;

}

 

fork产生子进程,父进程返回子进程pid,不为0,所以输出父进程的那句话,子进程返回0,所以会输出子进程那句话。

 

结果如下:

最新文章

  1. Android 网络HTML查看器
  2. 指定的参数错误。Vim.Host.DiskPartitionInfo.-spec VSPHERE.LOCAL\Administrator WIN-DOPGQVRRU2C
  3. 1.C#中通过委托Action消除重复代码
  4. HttpClient(4.3.5) - HTTP Authentication
  5. 利用绝对定位与margin实现元素居中
  6. Unity的Lerp函数实现缓动
  7. HTML5 文件域+FileReader 读取文件并上传到服务器(三)
  8. javascript 中arguments.callee 调用自身
  9. Imageloader框架
  10. Android异步消息机制
  11. git gui提交无法获知你的身份 20
  12. Python的交叉编译移植至arm板
  13. Spring Boot 2.0 配置图文教程
  14. 利用SQL活动和监视器找出耗时与占用CPU较高的不良SQL语句
  15. LIMIT与OFFSET的使用
  16. Qt UI tips
  17. 80x86的内存寻址机制
  18. 两排序数组的中位数 Median of Two Sorted Arrays
  19. APP服务端开发遇到的问题总结(后续再整理解决方法)
  20. ios 工作日志

热门文章

  1. 监听spring加载完成后事件
  2. LightSpeed的批量更新和批量删除
  3. 一个SharePoint定时器 (SPJobDefinition)
  4. hdu 4738 Caocao&#39;s Bridges 图--桥的判断模板
  5. jenkins 更换主数据目录
  6. .net framework 4.6.2 下载
  7. nginx 配置单入口
  8. makefile中的伪目标
  9. javaScript事件(四)event的公共成员(属性和方法)
  10. 深度优先搜索 codevs 1065 01字符串