open调用成功返回值是不是为0? read(filename,buffer,number),成功调用返回的值是不是读取的字节数number? write(filename,buffer,number),成功调用返回的值是不是写入文件的字节数number?
by wy200747055 - Linux环境编程 - 2012-06-12 12:54:19 阅读(7022) 回复(2)
[code]#include
小白求教,open函数打开文件夹并不返回-1,这是说open函数不仅可以打开文件,还可以打开文件夹吗?如果对open函数打开文件夹返回的句柄进行读写操作,会有什么后果?
learning perl经常会看到这样的例子: if (! open ABC,"/etc/###") { die"ASDFGHJ"; } 那么也就是说成功打开一个文件的返回值应该是一个非零?而如果返回0说明打开失败? 觉得好奇怪~~
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode) { long ret; if (force_o_largefile()) flags |= O_LARGEFILE; ret = do_sys_open(AT_FDCWD, filename, flags, mode); /* avoid REGPARM breakage on x86: */ asmlinkage_protect(3, ret, filename, flags, mode); return ret; } 由此看出,真正的打开函数是do_sys_o...
当函数是判断时,一般返回0作为false, 非0作为true 当返回值代表状态时,0表示成功是普遍认同的, 但非0的情况下,正负返回值有什么区别,看APUE时,有时候返回-1,有时又返回1 知道的朋友说一下自己的理解,谢了
刚用到system函数,要根据其返回值来做进一步操作,可是system的返回值并不等于其调用的程序的返回值,man了没看懂,后来在网上搜索了一下,终于看到了一个DX的理解,记录之。 引自: 原文 [color="#0000ff"]要分成两部分来说: 1,在程序中,用exit来设置进程的退出值时,虽然该函数的参数类型为int型,但再父进程中只能取到其值的低8位.所以用exit返回值时,高于255的值是没有意义的. 2,对于system函数,返回值是由两部分...
共享内存的基本用法: shmget shmat 调用都没有问题 对shmat做了封装,示意代码如下 char* LinkShm(int shm_id, int flag) { char *shmptr; shmptr = shmat(shm_id,NULL,flag); return shm_ptr; } 然后调用返回的值,一直是错误的,调用代码如下: char* shmptr; shmptr = LinkShm(shm_id,0); 使用gdb调试发现,函数LinkShm()中的shmptr的值是对的,返回给调用者指针shmptr时shmat返回的64位地址,高位4字节给截断了...
在写一本shell中有这样一段,想进行数据库expdp 导出,但当导出出错时 $?仍然返回0, 应该如何修改呢 谢谢 su - oracle -c "expdp system/$DB_SYSTEM_PASSWD schemas=$schemas include=table directory=TEMP_DIR1 dumpfile="$schemas"_USER.dmp logfile=exp"$schemas"_USER.log" >> $logfile SQLPLUS_RET=$? if [ ${SQLPLUS_RET} -eq 0 ]; then echo "NOTE: Data exporting succeeded without error !" ...
linux创建进程函数fork()正确调用一次的时候有两个返回值:
子进程返回:0
父进程返回:>0的整数(返回子进程ID号)
而错误的时候返回-1
而在介绍fork()函数时的应用例子一般都为以下结构:如下例:
#include