ls -lisa 命令中第二列的含义是什么?
ls -lisa
total 12
280187 0 -rw-rw-r-- 2 embedded embedded 0 Apr 3 02:05 a.txt
Run Code Online (Sandbox Code Playgroud)
但我不知道第二列代表什么?
C程序在特殊情况下在Linux中可能无法执行。示例:您分配了一些空间,但操作系统拒绝了它。
char *buffer = (char *) malloc(1024);
if (buffer == NULL)
return ENOMEM;
Run Code Online (Sandbox Code Playgroud)
此故障由交付给OS的返回码标记。
所以我的问题是,当程序检测到错误时,约定是什么?它应该返回正数还是负数返回码?
我的教授告诉我在UNIX / Linux中始终返回负错误代码。但是errno码都是正整数。同样,EXIT_FAILURE中的define-Statement为1,为正整数。所以我的代码应该像这样:
char *buffer = (char *) malloc(1024);
if (buffer == NULL)
return -ENOMEM;
Run Code Online (Sandbox Code Playgroud)
还是喜欢上面的代码?我从Linux内核模块知道,在大多数情况下,它们在失败时会返回负错误代码。
感谢您的帮助。
在以下函数中:
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr,
int protocol);
Run Code Online (Sandbox Code Playgroud)
您可以为互斥属性定义协议。可以使用以下协议:
我知道选择pthread_prio_inherit时,保存锁的任务获取所有任务的最高优先级(进程(如果进程之间的进程)或线程之间的过程)。这可以防止优先级反转。但 PTHREAD_PRIO_PROTECT 似乎也这样做。所以我的问题是,这两种协议有什么区别?
fsync和syncfs有什么区别?
int syncfs(int fd);
int fsync(int fd);
Run Code Online (Sandbox Code Playgroud)
fync的联机帮助页说明如下:
fsync()传输("刷新")文件描述符fd引用的文件(即修改的缓冲区缓存页)的所有修改后的内核数据到磁盘设备(或其他永久存储设备),以便所有即使在系统崩溃或重新启动后,也可以检索更改的信息.这包括写入或刷新磁盘高速缓存(如果存在).呼叫将阻止,直到设备报告传输已完成.它还刷新与文件关联的元数据信息(请参阅stat(2)).
syncfs的联机帮助页说明如下:
sync()导致对文件元数据和数据的所有缓冲修改都写入下层文件系统.
syncfs()与sync()类似,但仅同步包含打开文件描述符fd引用的文件系统.
对我来说两者似乎都是平等 它们正在同步filedescriptor引用的文件和关联的元数据.