strace指令
strace:跟踪系统调用和信号
cat -n test.log | tail 查看最后十行系统调用信息,可以看到在系统底层实际调用的是write系统函数
一行数据对应一个CPU核心
运行一个死循环查看
#include<iostream>
using namespace std;
int main()
{
for(;;);
return 0;
}
kill -pid 杀掉即可
fork-and-execve
#include<iostream>
using namespace std;
#include<unistd.h>
#include<err.h>
#include<stdlib.h>
#include<stdio.h>
void child()
{
char* args[]={"/bin/echo","hello",NULL};
cout<<"我是子进程,我的pid="<<getpid()<<endl;
fflush(stdout);
execve("/bin/echo",args,NULL);
err(EXIT_FAILURE,"exec() failed");
}
void parent(pid_t pid_c)
{
cout<<"我是父进程,我的pid="<<getpid()<<"我孩子的pid="<<pid_c<<endl;
exit(EXIT_SUCCESS);
}
int main()
{
pid_t ret;
ret=fork();
if(ret==1)
err(EXIT_FAILURE,"fork() failed");
if(ret==0)
child();
else parent(ret);
err(EXIT_FAILURE,"不会运行到这");
return 0;
}