Unix 线程共享创建进程打开的文件资源(1)

执行环境:Linux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

1. 测试代码 : a.c

 1 #include <fcntl.h>
 2 #include <unistd.h>
 3 #include <stdio.h>
 4 #include <pthread.h>
 5 #include <string.h>
 6
 7 pthread_t ntid;
 8
 9 void * thr_fn(void * arg)
10 {
11    int * fp = (int *)arg;
12    char * str = "Hello the world!\n";
13
14    int len = write(*fp,str,strlen(str));
15    if(len)
16    {
17     printf("Thread write a string to the file by the descriptor the createprocess created!\n");
18    }
19
20    close(*fp);
21    return ((void *)0);
22 }
23
24 int main(void)
25 {
26     int err;
27     int fd;
28
29     fd = open("log.txt",O_CREAT|O_WRONLY);
30     if(-1 == fd)
31     {
32     printf("Failed to open  file!\n");
33     }
34
35     err = pthread_create(&ntid,NULL,thr_fn,&fd);
36     if(err != 0)
37     {
38     printf("can‘t create thread ,errno = %d\n",err);
39     }
40     sleep(3);
41     return 0;
42 }

2. 如果系统没有相应的pthread库,执行:

1 sudo apt-get install glibc-doc

2 sudo apt-get install manpages-posix-dev

编译运行:

1 gcc a.c -lpthread

时间: 2024-07-30 10:17:11

Unix 线程共享创建进程打开的文件资源(1)的相关文章

Unix 线程改变创建进程中变量的值(2)

执行环境:Linux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 1.测试代码: a.c 1 #include <fcntl.h> 2 #include <unistd.h> 3 #include <stdio.h> 4 #include <pthread.h> 5 #include <string.

s11.1 lsof:查看进程打开的文件

功能说明 lsof 全名为list open files,也就是列举系统中已经被打开的文件,通过lsof命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件. [语法格式] lsof    [option] lsof    [选项] 参数选项         解释说明 -c<进程名>     显示指定的进程名所打开的文件 -p<进程号>     显示指定的进程号所打开的文件 -i            通过监听指定的协议.端-和主机等信息,显示符合条件的进程

s11.1 查看进程打开的文件

功能说明 lsof 全名为list open files,也就是列举系统中已经被打开的文件,通过lsof命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件. [语法格式] lsof [option] lsof [选项] 参数选项 解释说明 -c<进程名> 显示指定的进程名所打开的文件 -p<进程号> 显示指定的进程号所打开的文件 -i 通过监听指定的协议.端-和主机等信息,显示符合条件的进程信息 -u 显示指定用户使用的文件 -U 显示所有socket文件

查看一个进程打开的文件都有哪些

step 1 pfile pid step 2 根据 inode number 查找 比如 bash-2.05# pfiles 26053 26053: python Current rlimit: 256 file descriptors 0: S_IFCHR mode:0620 dev:32,0 ino:3982 uid:0 gid:7 rdev:24,2 O_RDWR|O_NOCTTY|O_LARGEFILE 1: S_IFCHR mode:0620 dev:32,0 ino:3982 u

lsof恢复进程打开的文件

工作原理:进程每打开文件都会生成一个文件句柄FD来标识一个文件,进程打开的文件如果没有被释放,可以通过文件句柄FD来恢复删除的文件 注意:适合恢复进程一直在打开一个文件,例如日志文件,如果配置文件进程启动的时候读取马上释放掉该文件的句柄通过这种方式是恢复不了的:同时如果打开的文件被删除掉,同时把服务重启了,服务被重启这个文件句柄也会被释放掉,通过lsof方式也是无法恢复的: 安装:yum install lsof -y 查看打开/var/log/messages文件的进程 这里打开/var/lo

【讲清楚,说明白!】干货--使用lsof恢复进程打开的文件

目录:(一)lsof恢复文件(二)lsof的其他用法 (一)lsof恢复文件(1.1)如果在系统中有某个进程打开了一个文件,但是这个文件被我们误删除,此时我们希望将误删除的文件恢复.如果某个被误删除的文件所对应的进程没有关,这个文件就可以恢复.(1.2)在Linux中的FD文件描述符与windows中的文件句柄是同样的一个概念,一个进程打开一个文件就会产生相应的文件描述符,如果这个进程将文件关闭了,那么这个文件描述符或文件句柄就会跟着释放掉了.(1.3)我们直接执行lsof命令,可以看到如下的信

查询进程打开的文件[转]

fuser 有的时候我想要知道我的程序到底在这次启动过程中开启了多少文件,可以利用 fuser 来观察啦! 举例来说,你如果卸载时发现系统通知:『 device is busy 』,那表示这个文件系统正在忙碌中, 表示有某支程序有利用到该文件系统啦!那么你就可以利用 fuser 来追踪罗!fuser 语法有点像这样: [[email protected] ~]# fuser [-umv] [-k [i] [-signal]] file/dir 选项与参数: -u :除了程序的 PID 之外,同时

函数的功能是创建或者打开一个文件或者I/O设备

http://5455112.ggjj6785.pw/sc.asphttp://5455112.ggjj6786.pw/sc.asphttp://5455112.ggjj6787.pw/sc.asphttp://5455112.ggjj6788.pw/sc.asphttp://5455112.ggjj6789.pw/sc.asphttp://5455112.ggjj6790.pw/sc.asphttp://5455112.ggjj6791.pw/sc.asphttp://5455112.ggjj

同一进程中的线程共享的资源有哪些 转载

转自:http://blog.csdn.net/shuilan0066/article/details/7683315 线程共享的环境包括:进程代码段.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯).进程打开的文件描述符.信号的处理器.进程的当前目录和进程用户ID与进程组ID. 进程拥有这许多共性的同时,还拥有自己的个性.有了这些个性,线程才能实现并发性.这些个性包括: 1.线程ID       每个线程都有自己的线程ID,这个ID在本进程中是唯一的.进程用此来标 识线程.