linux学习笔记3
将结果输出到另外一个终端中
通过xshell分别打开两个终端

c程序中,默认有三个输出流,分别为STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
printf("stdin=%d\n",STDIN_FILENO); //默认输入流
printf("stdout=%d\n",STDOUT_FILENO); //默认输出流
printf("stderr=%d\n",STDERR_FILENO); //默认错误输出流
return 0;
}
如何将内容输出到另外一个终端中
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
int main(int argc,char *argv[])
{
close(STDOUT_FILENO); //关闭默认输出流
int fd = open("/dev/pts/1",O_WRONLY); //打开终端1,会将终端1描述符替换为默认的输出流,
while(1)
{
sleep(1);
printf("pts1=%d\n",fd); //会将输出的内容指定到终端中1
}
return 0;
}
僵死进程
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc,char *argv[])
{
pid_t child = fork();
int status;
if( child == -1)
{
printf("fork failed!\n");
return -1;
}
if(child == 0)
{
printf("child bengin!\n");
printf("childe end!\n");
exit(0); //子进程退出,父进程没有退出的话,就可能形成僵死进程
}
else
{
printf("parent begin!\n");
printf("parent end!\n");
}
return 0;
}
可以用wait避免僵死进程,具体使用看
linux学习笔记2孤儿进程(与僵死进程对应)
孤儿进程是一个父进程在调用wait或者waitpid之前就已经退出的子进程.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc,char *argv[])
{
pid_t child = fork();
if( child == -1)
{
printf("fork failed!\n");
return -1;
}
if(child == 0)
{
printf("child bengin!\n");
sleep(1);
printf("pid =%d\n",getppid()); //输入父进程id是1,也就是init进程,这个时候该进程就是孤儿进程
}
else
{
exit(0);
}
return 0;
}
秋风
2016-11-22