can';t在指定的时间执行命令
我的程序有问题。当我调试它时,can';t在指定的时间执行命令,c,C,我的程序有问题。当我调试它时,fd2是
fd2是<0
,如果是,就不会得到它。看看吧
printf("Enter file name: ");
scanf(" %s", file_name);
printf("Enter file name2: ");
scanf(" %s", file_name2);
fd=open(file_name, O_RDWR, S_IRWXU);
fd2=open(file_name2, O_RDWR, S_IRWXU);
if(fd2<0){
printf("Error opening file!\n%s\n", strerror(errno));
return(-1);
}
if(fd<0){
printf("Error opening file!\n%s\n", strerror(errno));
return(-1);
}
printf(“输入文件名:”);
scanf(“%s”,文件名);
printf(“输入文件名2:”);
scanf(“%s”,文件名2);
fd=打开(文件名,O_RDWR,S_IRWXU);
fd2=打开(文件名2、O\U RDWR、S\U IRWXU);
if(fd2fd
,意思是“文件描述符”,是open
返回的值,您可以使用read
和write
等函数对文件进行后续访问
它可以是除-1
之外的任何整数值,用于告诉您打开文件时出错
fd工作正常。检查open()
的返回值是否正确,如果open()
失败意味着权限问题
fd=open(file_name, O_RDWR, S_IRWXU);
fd
是一个文件描述符,您可以使用
ls -l /proc/pid/fd
ls -l /proc/pid/fd /* check here what value its prints */
及
#包括
int main(){
字符文件名[50],文件名2[50];
printf(“输入文件名:”);
scanf(“%s”,文件名);
int-fd,fd2;
printf(“输入文件名2:”);
scanf(“%s”,文件名2);
fd=打开(文件名,O_RDWR,S_IRWXU);
如果(fd<0){
printf(“打开文件时出错!\n%d\n”,strerror(errno));/*使用%d而不是%s*/
返回0;/*失败时open()返回0而不是-1*/
}
fd2=打开(文件名2、O\U RDWR、S\U IRWXU);
if(fd2<0){
printf(“打开文件时出错!\n%d\n”,strerror(errno));
返回0;
}
}
不需要C标记。我删除了它。当你在调试器中运行它时,你学到了什么?文件不存在?也许可以将|O#u create
添加到标志中?如果(fd2将您的错误/调试作为文本而不是图像。谢谢,我在手册页上看到,如果发生错误,open将返回-1,因此我认为下面的所有内容0都将是打开错误。成功打开的文件描述符是非负的。唯一的错误值是-1
;任何其他负值都是无效的文件描述符(如果与需要有效文件描述符的函数调用一起使用,则生成EBADF
)。参见POSIX-成功完成后,这些函数将打开文件并返回一个表示文件描述符的非负整数。否则,这些函数将返回-1并设置errno
,以指示错误。如果返回-1,则不会创建或修改任何文件。因此,我不同意以下断言:“fd<0
而不是-1
就可以了。”@JonathanLeffler,来自VC文档:“返回打开文件的文件描述符。返回值-1表示错误,在这种情况下设置了errno“。因此,这最多取决于编译器,必须检查编译器的文档。使用%d
打印strerror()
中的错误字符串不太可能产生有用的信息。
#include<errno.h>
int main() {
char file_name[50],file_name2[50];
printf("Enter file name: ");
scanf(" %s", file_name);
int fd,fd2;
printf("Enter file name2: ");
scanf(" %s", file_name2);
fd=open(file_name, O_RDWR, S_IRWXU);
if(fd < 0) {
printf("Error opening file!\n%d\n", strerror(errno));/* use %d instead of %s */
return 0; /* upon failure open() returns 0 not -1 */
}
fd2=open(file_name2, O_RDWR, S_IRWXU);
if(fd2 < 0) {
printf("Error opening file!\n%d\n", strerror(errno));
return 0;
}
}