进程和相关函数学习

昨天学了进程控制,信息量实在有点大,好多都没有接触过。

今天分享我今天查的几个函数,头文件我就不写了,man里面都有。

先说明一下,下面的都是我自己的认识,我接触这几个函数也就一天左右,里面肯定有很多错误,希望大神不要见怪。


umask 

mode_t  umask (mode_t mask);

umask是Linux中的一个命令,也有一个同名函数。网上都说函数用的多一点,我这边也主要讨论函数。作用都差不多,设置文件掩码,及限制文件权限,作用感觉和chmod差不多,又有一些不同。讲的通俗一点,你使用umask调试了之后,你以后在这个文件中创建的文件和目录的权限都是固定的了。当然,你若是不满意,也可以用chmod改。而chmod并不能设置这个文件创建文件时的默认权限。

具体的计算方法是 

(~umask) & mode

大体的意思是,对函数里面的参数取反,然后与mode进行与运算(&)。前面的取反好理解,umask是用一种“补码”的形式设置权限的,你写个umask(0)  就是设置0777权限,反过来就行了。后面那个也好理解,系统是不允许在创建文件时就赋予它执行权限,想要执行权限必须通过chmod赋予。所以说这边的mode是一种权限的限制。具体是多少,对不起,我还真不太清楚,毕竟我就用过一次。猜测因该是(rw-rw-rw-)

这个公式还是老师自己写的,说真的我网上没有找到,也不知道对不对,但我能确定他的意思。

返回值:在man里面说“这个系统调用总是会成功,返回调用前一个掩码”

对于现在的我来说,只要知道两点就够了。

1.umask是用来设置新文件权限的掩码的

2.umask设置的权限是有缺省的


fflush

int fflush( FILE * stream );

这个函数感觉比较简单,但可能是我比较愚笨把,还是有几点不懂。

首先,它的说明是:会将缓冲区内的数据写会到参数文件中,若写入NULL,会将打开的文件数据更新

我现在学到的缓冲区,大概就两个,一个标准输入(stdin),一个标准输出(stdout)。在用scanf输入的时候,若只要接收一个字符,你却输入了一长串,系统只会接收一个字符,然后后面的进入标准输入缓冲区。还有就是使用printf的时候不写‘\n’,内容也会先进入缓冲区,虽然平时感觉不到,那是因为文件结束后,printf还是会把缓冲区数据输出的。

我的疑问,1,是否可以控制自己手动设置的缓冲区。以后再研究偷笑

  2,网上有很多就是提到了“流”这个概念,啥意思啊。

返回值:成功或者没有缓冲区都返回0, 错误返回EOF。


setsid

pid_t setsid (void);

说明:设置进程新的会话。

会话这个概念,也是查了大半天,基本没有看懂。我的理解是,设置了新的会话之后,是进程可以跳出终端的限制。在别的终端上也可以如期的进行操作。强调一点,在使用这个函数的时候,使用进程必须不能是进程首进程。这句话也没咋么看懂,我的理解

:若想使用这个函数,必须先创建子进程,然后排除父进程的可能性之后(可以杀除,可以选择排除),在进行setsi操作。

返回值 :失败 -1,成功 0


chdir

int chdir(const char* path);

说明:改变当前的工作目录,参数写成字符串的形式,如"/bin",

这个真没啥好说的。也不知道没有实际具体的用处。

返回值:成功 0,失败-1.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值