unix相关内容

谁能解释关于后叉'文件描述'一个简单的说明()?

在“UNIX环境高级编程”,第二版,由理查德·史蒂文斯。 第8.3节fork函数。 下面的描述: 这父和子共享相同的文件偏移量,它是重要的。 考虑到派生一个子处理,然后等待子来完成。假设这两个进程写到标准输出作为其正常处理的一部分。如果父具有重定向(由一个壳,也许)其标准输出是至关重要的父文件偏移由儿童在儿童写到标准输出进行更新。 [1。这是什么意思?如果父母的STD输出重定向到一个“文 ..
发布时间:2016-08-17 23:13:05 服务器开发

是否有一个相当于WinAPI的的MAX_PATH Linux / Unix下?

如果我想分配一个字符数组(C语言)的保证是大到足以容纳任何有效的绝对路径+文件名,有多大它需要的人。 在Win32中,就有MAX_PATH定义。等效于UNIX / LINUX是什么? 解决方案 有一个 PATH_MAX ,但它是一个有点问题。从真实路径的错误部分(3)手册页: 该函数的POSIX.1-2001标准版本是由破 设计,由于不可能以确定一个合适大小 输出缓冲器, re ..
发布时间:2016-08-17 23:05:43 服务器开发

有什么用_start()在C?

我从我的同事了解到,一个能写和不写的main()函数执行的 C 的程序。这是可以做到的在 withoutMain.c //用gcc编译-nostartfiles它无效_start(){ INT RET = my_main(); 出口(RET); }INT my_main(){ 看跌期权(“这是无主的程序\\ n!”); 返回0; } 编译如下: 的gcc -o witho ..
发布时间:2016-08-17 23:05:21 服务器开发

为什么malloc()和printf()的说,非重入?

在UNIX系统中,我们知道的malloc()是一个非重入函数(系统调用)。这是为什么? 同样,的printf()也被说成是不可重入;为什么? 我知道重入的定义,但我想知道为什么它适用于这些功能。 什么prevents他们所保证折返? 解决方案 的malloc 和的printf 通常采用全球结构,并采用基于锁的同步内部。这就是为什么他们不折返。 的的malloc 功能既可以是线程安全 ..
发布时间:2016-08-17 23:05:11 服务器开发

有关putenv()函数和SETENV问题()

我一直在思考一些关于环境变量有几个问题/意见。 传给putenv(字符*字符串); 这似乎调用致命的缺点。因为它不会复制传递的字符串,你不能用本地调用它并不能保证堆中分配的字符串不会被覆盖或意外删除。此外(虽然我没有测试过),因为一个使用环境变量是值传递给孩子的环境中,这似乎是无用的,如果孩子调用的exec *()的一个功能。我错在那? Linux手册页指出的glibc 2.0-2. ..
发布时间:2016-08-17 22:50:34 服务器开发

如何将日期时间转换为unix时间戳在C?

的情况是:我得到的日期时间格式“YYYY-MM-DD HH:MM:SS”与libexif。为了尽量减少成本节约,我想转换日期时间到UNIX时间戳或类似的只花费64位或32位。有没有用C任何明确的方式? 解决方案 您可以尝试的 strptime 组合和 mktime 结构TM TM; time_t的时代; 如果(strptime(时间戳,“%Y-%M-%D%H:%M:%S”!,&安培; T ..
发布时间:2016-08-17 22:49:27 服务器开发

分叉后,在全局变量共享?

考虑一个简单的code: INT MYVAR = 0; 诠释主(){ 如果(叉()大于0){ MYVAR ++; }其他{ //父亲无可奈何 } } 当孩子增加MYVAR,与父亲(如pthread的)共享的价值? 解决方案 没有,是的。 没有,它们不以任何方式是对程序员可见共享;流程可以独立修改自己的变量副本,他们会更改,恕 ..
发布时间:2016-08-17 22:48:12 服务器开发

执行在Unix上的共享库

有的Unix共享库的命令行叫,好像他们是可执行文件时,提供的输出。例如: $ /lib/libc.so.6 GNU C库稳定版本2.13,罗兰·麦格拉思等。 版权所有(C)2011自由软件基金会 这是自由软件;参见复印条件的来源。 有没有保修;即使是用于为适销性或 特殊用途。 由GNU CC版本4.5.2编译。 编译一个Linux 2.6.37系统上2011-01-18。 [...] 在用 ..
发布时间:2016-08-17 22:46:03 服务器开发

我如何可以复制使用C在Unix上的文件?

我在找了Unix等效的Win32的 CopyFile ,我不希望写我自己的版本推倒重来。 解决方案 有没有必要或者调用不可移植的API,如发送文件,或掏出外部公用事业。在20世纪70年代曾回同样的方法仍然有效现在: 的#include< fcntl.h> #包括LT&;&unistd.h中GT; #包括LT&;&errno.h中GT;INT CP(为const char *到 ..
发布时间:2016-08-17 22:43:23 服务器开发

实际的例子使用DUP或dup2

我知道什么呢 DUP 或 dup2 做,但我不知道什么时候会用它。任何实际的例子?谢谢你。 解决方案 一个例子使用的是I / O重定向。为此,fork一个子进程,并关闭标准输入或标准输出文件描述符(0和1),然后你做你选择的另一个文件描述符现在将映射到最低的文件描述符,这是在这个DUP()情况下0或1。 现在使用这个你可以Exec的任何子过程,可能是不知道你的应用程序中,每当孩子写在标准 ..
发布时间:2016-08-17 22:34:30 服务器开发

正在文件描述符共享fork()的ING什么时候?

比方说,我打开与文件打开()。然后我叉()我的程序。 威尔的父亲和孩子现在共享的文件描述符相同的偏移? 我meanm如果我做我的父亲写,偏移将在孩子被改变呢? 或将偏移独立后叉()? 解决方案 从叉(2): *子继承打开文件描述符的父母的一套副本 器。在子每个文件描述符是指在同一开 文件描述(请参阅open(2))与相应的文件描述符 在父。这意味 ..
发布时间:2016-08-17 22:31:56 服务器开发

STAT()错误'没有这样的文件或目录“时,文件名由READDIR()返回

我不能够确定由stat抛出的错误。下面的程序读取目录中的所有文件和打印文件名: DIR * DP; 结构的dirent * dirp; 结构统计某人;如果((DP =执行opendir(的argv [1]))== NULL) { PERROR(“无法打开目录”); } 而((dirp = READDIR(DP))!= NULL) { 如果(STAT(dirp-> d_na ..
发布时间:2016-08-17 22:31:08 服务器开发

写入标准输入和标准输出从阅读(UNIX / LINUX / C编程)

我工作的分配,其中一个程序拿了一个文件描述符作为参数(一般是在exec调用父),并从文件中读取和写入文件的描述符,并在我的测试中,我意识到,计划将在命令行工作,如果我用0,1或2作为文件描述符没有给出一个错误。这是有道理的,我只是说我会写信给标准输入,并将它显示在屏幕上。 对此有一个解释?我一直以为有在标准输入/输出一些保护,你当然不能向fprintf中或标准输入从与fgets标准输出。 的# ..
发布时间:2016-08-17 22:29:38 服务器开发

CTRL-D并没有停止一段时间(的getchar()!= EOF)循环

下面是我的code。我与终端运行在Ubuntu。当我输入(A 控制 D )的终端,该计划并没有停止,而是继续等待我的输入。 不是控制 D 等于EOF在UNIX? 感谢您。 #包括LT&;&stdio.h中GT;主(){ INT D组; 而(D =的getchar()!= EOF){ 的printf(“\\”的getchar()= EOF \\“的结果为%d \ ..
发布时间:2016-08-17 22:28:38 服务器开发

非阻塞呼吁阅读描述

我有一个FD描述符,我可以通过调用使用来自读取阅读(FD,缓冲,...)。现在,我要检查是否有什么实际进行通话,由于呼叫阻塞之前阅读。我该怎么做呢? 解决方案 INT标志=的fcntl(FD,F_GETFL,0); 使用fcntl(fd,F_SETFL,旗帜| O_NONBLOCK); 上面的code片段将配置非阻塞访问这样的描述符。如果数据是,当你调用read不可用,则系统调用将失 ..
发布时间:2016-08-17 22:27:24 服务器开发

我怎样才能文件指针(FILE * FP)转换为文件描述符(INT FD)?

我有一个 FILE * ,通过调用的fopen返回()。我需要从它那里得到一个文件描述符,以它使像通话FSYNC(FD)。什么是函数从文件指针得到一个文件描述符? 解决方案 的正确功能是 INT的fileno(FILE *流)。它可以发现<文件stdio.h方式> ,是一个POSIX标准但不标准的C ..
发布时间:2016-08-17 22:15:37 服务器开发

什么是民意调查,并选择之间的区别是什么?

我指POSIX标准选择并的民调系统C API调用。 解决方案 我觉得这的答案你的问题: 从理查德·史蒂文斯(rstevens@noao.edu): 的根本区别在于,选择()的FD_SET是一个位掩码和 因此具有一定的固定大小。它将为内核成为可能 当内核编译并不限制本尺寸,允许 应用程序定义FD_SETSIZE来为所欲为(如注释 在系统头暗示今天),但它需要更多的工作。 ..
发布时间:2016-08-17 22:12:42 服务器开发

是否有必要重新选择系统调用的FD_SET?

我使用在Unix中的select函数面临的一个问题。 我有等待一个连接的服务器。首先,我监听套接字文件描述符监听器添加到使用 FD_SET(侦听FD_SET readfds , readfds)然后我用在选择()。 当我得到一个方面,我称之为接受()并设置 readfds 在选择与接受的文件描述符,并开始从连接接收的数据。然而,当我检查了strace的code,则选择不显示在 readfds ..
发布时间:2016-08-17 22:10:10 服务器开发