进程编程及守护进程

<全面认识Linux进程>

笔记

欲速则不达,建议先完成 的任务!

继续学习

通关时间从学习第1个课程开始计时

7天内通关,可获得赏金50元

开始学习
该课程需要登录后才能观看
3400 位同学正在学习! 查看详情

MAKERU262087938

1

回答

execl 优先问题?

吴老师回复:

<...code...> 查看全部

sky@sky-pc:~/hw$  
#include <stdio.h>
#include <unistd.h>

int main(int argc, const char *argv[])
{
	printf("hello world! \n");
	execl("./a.out", "", NULL);
	return 0;
}
sky@sky-pc:~/hw$ gcc a.c -o a.out
sky@sky-pc:~/hw$ ./a.out

这样试一下

收起

MAKERU262087938

1

回答

David

1

回答

听起来很抽象

杨老师回复:

这里的知识是比较抽象,看不见摸不着,我们多和生活中联系,来帮助理解,比如,多进程*一件事,我们就可以理解成:这件事是盖房子,多进程就是多个人一起盖,那这样多进程是不就比一个进程效率高了。

颜飞

1

回答

execlp中的file和execl中的path有什么区别?

韩hyr回复:

写文件名就好和必须写路径的区别

小|鱼|

1

回答

printf("ajfalaklakd");这样老师说在终端上不打印,说是在缓冲区,为什么我式了式,能打印出来呢?

答疑讲师回复:

因为进程退出之后会清理输出缓冲区的内容。
在你的printf语句后面加上while(1),使进程不退出即可观察到效果

MAKERU1496411106

2

回答

 if ((pid=fork()<0))  {perror("fork");exit(-1);}
 if (pid>0){return 0;}    
 if (setsid()<0)  {perror("setsid");exit(-1);}
 chdir("/tmp");

答疑讲师回复:

 if ((pid=fork()<0))
因为<号优先级高于=号,所以你的代码实际上是这样被执行的
if(pid = (fork < 0)),此时你打印pid的值便都是0.

MAKERU1496411106

1

回答

老师你好 第一次执行的时候没有权限 如下错误
setsid failed: Operation not permitted
加sudo ./ 之后一次生成了三个进程
且只有一个是init的子进程 这是为什么?
该如何调整代码?

答疑讲师回复:

这种情况应该是你的父进程没有退出,创建守护进程的第一步便是创建了子进程,父进程需要退出。
如果还没有解决的话请贴出你的代码。

NJQ16101000008

1

回答

老师,,学arm 需不需要买资料,能不能给点建议。

答疑讲师回复:

华清远见嵌入式学院的-ARM嵌入式体系结构与接口技术配合咱们线上视频的讲解就没问题哦

3

回答

成功时system返回的是0

答疑老师回复:

二是指令成功执行但是没有得到执行结果,比方说“ls
noexistfile.c”,我们随便ls一个不存在的文件名,此时shell会提示”无法访问noexistfile.c,没有那个文件或目录”,此时我们的ls命令执行出了错,但是仍然属于shell顺利执行完毕,此时将提示的错误对应的errno,也就是28-15位中,也就是2*256=51回512。

CDQ072000029

1

回答

老师我们怎样才能杀死僵尸态呢?

答疑老师回复:

通过命令:
kill -9 pid号

上次保存笔记

看见好看好看就很快很快就会看见

保存 修改