Articles of unix

有没有在fd_set(select()或pselect())上使用结构拷贝导致问题的平台?

select()和pselect()系统调用修改它们的参数(' fd_set * '参数),所以input值告诉系统要检查哪些文件描述符,返回值告诉程序员哪些文件描述符当前可用。 如果您打算为同一组文件描述符重复调用它们,则需要确保每次调用都有一个新的描述符副本。 显而易见的方法是使用结构副本: fd_set ref_set_rd; fd_set ref_set_wr; fd_set ref_set_er; … …code to set the reference fd_set_xx values… … while (!done) { fd_set act_set_rd = ref_set_rd; fd_set act_set_wr = ref_set_wr; fd_set act_set_er = ref_set_er; int bits_set = select(max_fd, &act_set_rd, &act_set_wr, &act_set_er, &timeout); if (bits_set > 0) { …process the output values of act_set_xx… […]

Vim:\ n与\ r

我有一段时间没有在Unix系统中使用vim,但是我记得没有\ r,它总是\ n。 我在Windows下使用gVim,当我search新行字符时,我使用\ n。 search\ r不返回任何内容。 但是当我replace字符时,我必须使用\ r's。 \ n的给我^ @ 任何人都可以解释这里发生了什么?

sed:如何用“\ r”replaceCR和/或LF“\ n”,所以任何文件都在一行中

我有类似的文件 AAA BBB CCC 我需要他们sed进入aaa\r\nbbb\r\nccc 它应该适用于unix和Windows,相应地用\r或\r\nreplace它们 问题是sed在行尾添加了\n ,但保持行分隔。 我该如何解决?

用python在窗口中使用绝对的unixpath

我正在创build一个将blob文件存储到硬盘的应用程序,但是这个脚本必须在linux和windows上运行,问题是我想从文件系统根目录给它一个绝对path,而不是相对于项目文件,这是因为即时通讯使用git,而不想处理从同步中排除所有这些文件。 所以我想有这样的东西: path = '/var/lib/blob_files/' file = open(path+'myfile.blob', 'w') 并在unix中获得一个文件: /var/lib/blob_files/myfile.blob 并在窗口中: C:\var\lib\blob_files\myfile.blob 它也可以相对于用户主文件夹(/ home /用户在UNIX和C:/用户/用户在Windows中),但我想这个问题是非常相似的。 我怎么能做到这一点? 有什么图书馆或function可以帮助我透明地转换这个path,而不必问什么平台是一直运行的脚本? 我的两个选项,绝对从根目录或相对于主文件夹,您build议使用哪一个? 在此先感谢您的任何意见

在C中,如何在执行execvp()或类似的调用时将stdin / stdout / stderrredirect到文件?

我有以下代码: pid_t pid = fork(); if (pid == -1) { // … } else if (pid == 0) { stdin = someopenfile; stdout = someotherfile; stderr = somethirdopenfile; execvp(args[0], args); // handle error … } else { // … } 问题是, execvp()调用的input/输出仍然是控制台,而不是文件。 显然我做错了什么,做这个的正确方法是什么?