标签: posix

如何在C/C++中通知文件/目录更改,理想情况下使用POSIX

主题说明了一切 - 通常简单和跨平台的方式是智能地轮询.但是每个操作系统都有一些无需轮询即可通知的方法.是否有可能以合理的跨平台方式?(我只关心Windows和Linux,但我使用mac,所以我认为posix可能有帮助?)

c c++ posix

28
推荐指数
2
解决办法
2万
查看次数

检查文件是目录还是文件

我正在编写一个程序来检查某些东西是文件还是目录.有没有比这更好的方法呢?

#include <stdio.h>

#include <sys/types.h>
#include <dirent.h>
#include <errno.h>

int isFile(const char* name)
{
    DIR* directory = opendir(name);

    if(directory != NULL)
    {
     closedir(directory);
     return 0;
    }

    if(errno == ENOTDIR)
    {
     return 1;
    }

    return -1;
}

int main(void)
{
    const char* file = "./testFile";
    const char* directory = "./";

    printf("Is %s a file? %s.\n", file,
     ((isFile(file) == 1) ? "Yes" : "No"));

    printf("Is %s a directory? %s.\n", directory,
     ((isFile(directory) == 0) ? "Yes" : "No"));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c posix

28
推荐指数
2
解决办法
9万
查看次数

在Java中强制虚假唤醒

这个问题不是关于,虚假的唤醒是否真的很开心,因为这已经在这里全面讨论过:虚假的唤醒真的发生了吗?因此,这也不是为什么我必须围绕我的wait声明循环.这是关于:

我想构建一个虚假唤醒发生的案例.到目前为止我在上面提到的问题中学到的是:

如果发出一个Linux进程的信号,它的等待线程将各自享受一个不错的,热的虚假唤醒.

所以看来这只能用于linux机器,实际上我有Ubuntu 11.04 - 64位.我编写了一个Java程序,其中一个线程正在等待一个条件,但没有循环和另一个类,线程只是等待并被另一个线程通知.我认为在一个JVM中启动所有三个线程会强制执行上述情况,但似乎并非如此.

有没有其他人知道如何在Java中构建这样的案例?

java linux multithreading posix pthreads

28
推荐指数
2
解决办法
3108
查看次数

ECONNRESET在AF_LOCAL套接字的上下文中意味着什么?

据我所知,对于TCP套接字,ECONNRESET与RST数据包有关.但是我在read()和write()调用上也看到了AF_LOCAL套接字的ECONNRESET错误.这是什么意思?ECONNRESET与read()返回0或write()抛出EPIPE有什么不同?

sockets posix

27
推荐指数
1
解决办法
4万
查看次数

套接字选项是否从侦听套接字继承到accept()?

假设传递给的侦听套接字上accept设置了非默认选项setsockopt.这些选项(部分或全部?)是由接收连接的结果文件描述符继承的吗?

c sockets posix

27
推荐指数
3
解决办法
4452
查看次数

哪些系统将EAGAIN和EWOULDBLOCK定义为不同的值?

只是好奇.哪些系统提供EAGAIN和EWOULDBLOCK #define它们作为不同的值?

unix posix errno

27
推荐指数
1
解决办法
9267
查看次数

System V和Posix信号量之间的差异

使用System V和Posix信号量之间的权衡取舍是什么?

unix comparison posix semaphore tradeoff

26
推荐指数
3
解决办法
2万
查看次数

在Win32 API中等效于Posix popen()是什么?

是否与Win32 API中的Linux/Unix stdio.h popen()函数大致相同?如果是这样,我在哪里可以找到它?

编辑:我需要知道这个来修补D标准库中的遗漏.任何答案必须使用标准的Win32 API,没有特定于MSVC的功能.另外,如果存在的话,我更喜欢低级别的东西.

c linux api winapi posix

26
推荐指数
2
解决办法
3万
查看次数

POSIX C API函数列表在哪里?

我试图找出我在哪里可以找到关于POSIX函数的文档,但是很快就会出现.有什么建议?

c posix

26
推荐指数
2
解决办法
2万
查看次数

<system_error>类别和标准/系统错误代码

C++ 11引入了<system_error>包含通用系统的头文件来处理错误代码.An std::error_code是一个元组,包含一个int错误代码和一个对a的引用std::error_category,它定义了错误域和错误代码的处理.标准库带有四个类别:std::generic_category,std::system_category,std::future_category,和std::iostream_category.

有冲突,在其上使用的类别,都在这里SO和C++的参考点,创建时std::error_codeS /投掷std::system_error以s errno和WinAPI的错误代码:

但是,errno并且GetLastError()不能使用相同的类别,否则一些错误代码将是不明确的.错误代码33是一个例子,因为它是EDOMERROR_LOCK_VIOLATION.

甚至有些地方主张WinAPI的用户制作类别,但我目前找不到任何引用.这种替代方案会特别痛苦.

哪些类别应与使用errno,并应搭配使用GetLastError(),使

  • std::error_code::default_error_condition()
  • std::error_code::message()

是否简单且适用于底层错误代码?

c++ winapi posix c++11 system-error

26
推荐指数
2
解决办法
4760
查看次数

标签 统计

posix ×10

c ×5

c++ ×2

linux ×2

sockets ×2

unix ×2

winapi ×2

api ×1

c++11 ×1

comparison ×1

errno ×1

java ×1

multithreading ×1

pthreads ×1

semaphore ×1

system-error ×1

tradeoff ×1