linux进程属性

进程的所有信息记录在/proc/ 文件夹内的进程pid对应文件内(都在内存中,不在磁盘),有的是文件夹,有的是文件。(实时更新的,进程都有)(关联ps命令(做/proc/的文本分析))

进程属性记录在task_struct内

1.标识符pid是根据进程创建时,其余进程数量分配的。用处:标识进程。

关联:pid_t getpid()<unistd.h>系统调用(用程序请求操作系统内核提供服务的一种机制)接口

2.当前工作目录:CWD。是进程文件的所在路径。用处:方便进程根据相对路径找文件等。(如在当前目录下创建文件....txt)

关联:int chdir(const char*)

3.进程所属用户UID。用处:可以用于执行时判断权限(如普通用户在系统根目录创建文件权限不够)

4.ppid父进程的pid。

关联:pid_t getppid(); pid_t fork();给父进程返回子进程的pid,给子进程返回0,创建失败返回给父进程-1.

任何进程都是父进程创建的,执行命令行指令也是由bash创建(bash创建子进程可以子进程出问题不影响自己)

问题:1.进程正在执行,将它对应的可执行程序删掉会去掉进程吗?

                不会,进程被加载到内存了,删磁盘的不影响内存

补充:

编译器有的会警告没有使用的变量,可以之后加一个(void)变量;强转而不赋值

一个父进程可创建多个子进程(linux进程是树形结构)(例:IDE的语法检测实际不断调用编译器)

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
    pid_t id=fork();
    if(id>0)
    {
        printf("创建成功,我是父进程\n");
    }
    else if(id==0)
    {
        printf("创建成功,我是子进程\n");
    }
    else{}
    return 0;
}

父进程创建子进程:

先创建(拷贝,调整)子进程的PCB,再让子进程共享父进程的代码,但资源不共享(进程独立性),->变量值不共享.fork内创建完子进程后,父进程和子进程分别执行return语句(return时,核心任务已经完成),所以会返回两个不同的值,两者继续执行后面代码,进不同判断。(数据各私有一份)

fork之后子进程和父进程谁先运行取决于调度器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值