- 论坛徽章:
- 0
|
计时器
睡眠函数
unsigned int sleep(unsigned int seconds);
例:
#include XXXX
int main()
{
time_t dt;
time(&dt);
printf("%s begin at:%s\n",__FILE__,ctime(&dt));
puts("sleep for 5 seconds....");
sleep(5);
time(&dt);
printf("%s end at:%s\n",__FILE__,ctime(&dt));
return 0;
}
管道
创建管道
int pipe(int fd[2]);
fd[0]用于读
fd[1]用于写
例:
int z;
int fd[2];
if((z==pipe(&fd[0])))==-1)
{
perror("pipe");
exit(1);
}
printf("fd[0]=%d for reading\n",fd[0]);
printf("fd[1]=%d for writing\n",fd[1]);
将管道打开到其他进程
FILE *popen(const char *command,const char *mode);
int pclose(FILE *stream);
mode:只能为"r"或"w"
一定要用popen打开管道,以便从进程读取数据或把数据写到进程,但不能同时进行读写.
从管道读数据
例:打开一个管道到ps命令并读取管道信息
#include
#include
int main()
{
char buf[256];
FILE *p;
p=popen("ps -l","r");
if(!p)
{
perror("popen");
exit(1);
}
while(fgets(buf,sizeof(buf),p)!=0)
fputs(buf,stdout);
if(pclose(p))
{
perror("pclose");
exit(1);
}
return 0;
}
把数据写到管道
当前进程把数据写到管道时管道另一端的进程就会从它的标准输入读取数据
例:
#include
#include
#include
#include
#include
int main(int argc,char **argv)
{
struct passwd *pw=0;
char cmd[256];
FILE *p=0;
if(!(pw=getpwuid(geteuid()))
{
perror("getpwuid");
return 13;
}
sprintf(cmd,"mail -s 'a message from process id %ld' %s",(long)getpid(),pw->pw_name);
if(!(p=popen(cmd,"w")))
{
perror("popen");
return 13;
}
fprintf(p,"this is command %s speaking\n",argv[0]);
fprintf(p,"i am operating in the \n",argv[0]);
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/56374/showart_513061.html |
|