Articles of unix

Windows有一个__declspec相当于Unix GCC的__attribute __((弱))?

我想导入一些C代码,但是重写它的main()函数。 我可以在Unix下用__attribute__((weak))预处理C代码的主要声明,但是这不会在Windows中编译,因为Strawberry Perl的GCC和MinGW的GCC都不能识别__attribute__((weak)) 。 在线阅读文档, __declspec似乎function相似。 是否有一个相当于Unix GCC的__attribute__((weak))macros的__declspec ? 这是我发布的早期问题的更具体的版本。

如何从任意pthread_t获取线程ID?

我有一个pthread_t,我想改变它的CPU亲和力。 问题是我使用glibc 2.3.2,它没有pthread_setaffinity_np() 。 没关系,因为pthread_setaffinity_np()本身就是sched_setaffinity()的一个包装,可以通过传递线程ID而不是进程ID来设置任意线程的关联。 但是 … sched_setaffinity可以使用的线程ID是一个操作系统线程ID,可以从gettid()系统调用中获得。 这与opaquetypes的pthread_t不同 ,gettid()只会返回当前线程的thread-id。 我需要能够设置任意线程的CPU亲和力。 不幸的是,我不能访问pthread的私有部分,这会让我通过将pthread_t转换为struct pthread *来窃取线程id。 我猜,更好一些,因为依赖私有实现需要更多的麻烦。 我也一直在阅读pthread_getunique_np函数,但是这会返回一个“唯一的整型标识符” – 我不认为它是以任何forms或forms等同于操作系统线程ID。 因此,问题:我如何从任意pthread_t获得线程ID?

不能读取ascii字符26?

我用文本模式在一个文件中写了一个stream。 # python code f = open("somewhere in my computer","w") f.write("Hello\nWorld") f.write(chr(26)) # writing ascii character #26 to file f.write("hhh") f.close() ASCII字符#26之后我无法读取字节。 我知道我应该用二进制模式打开文件。 是ASCII字符#26 EOF字符。 如你所知,没有这样的东西,ei没有EOF字符。 那么问题是什么? 这是一个操作系统相关的问题? (我在微软的Windows中尝试这个)。

在Windows系统中recursion重命名文件夹和文件

我有以下文件夹结构: Top Folder -> SubFolder1 -> MyFolder_Latest -> MyFile_Latest.txt -> SubFolder2 -> MyFolder_Latest -> MyFile_Latest.txt -> SubFolder3 -> MyFolder_Latest -> MyFile_Latest.txt 我希望更改上面给出的不同子文件夹中的文件夹和文件。 所有的文件夹和文件都有相同的名称,我想更改为以下内容: Top Folder -> SubFolder1 -> myfolder -> myfile.txt -> SubFolder2 -> myfolder -> myfile.txt -> SubFolder3 -> myfolder -> myfile.txt 基本上在这里做两件事:a)从所有的文件和文件夹名称中删除_Latest。 b)将所有文件夹和文件的大小写转换为小写 任何人有什么想法如何在Windows中实现上述? 我的系统不允许安装UNIX,我不能将这些文件复制到UNIX系统,因为我们的networking目前不在任何UNIX盒子上提供SCP或FTP权限:-( 另外,如果有人在UNIX中有一个合适的解决scheme,我可以尝试将这些文件夹复制到一张DVD上,然后尝试在UNIX机器上运行这些命令:-)

用于Unix的Windows查找命令来search多个文件types

虽然在窗口中安装了cygwin给了unix命令的大部分,我仍然想知道如何使用Windows“查找”命令在一个命令中search多个文件types。 即: find . -name *.cpp -o -name *.h -o -name *.java find . -name *.cpp -o -name *.h -o -name *.java 上面的命令给出了所有cpp,h和java的列表,使用windows查找什么等价物?

stdout线程安全在Linux上的C?

在Linux上使用printf线程安全写入标准输出? 那么使用底层write命令呢?

在Windows命令提示符中使用shebang / hashbang

我正在使用服务脚本来在Windows 7上提供Node.js的目录。它在MSYS shell或sh运行良好,因为我已经把node.exe和服务脚本放在了我的〜/ bin中在我的PATH上),而input“serve”是因为它是Shebang ( #! )指令,它告诉shell使用节点运行它。 但是,Windows命令提示符似乎不支持没有* .bat或*。exe扩展名的普通文件,也不支持shebang指令。 是否有任何registry项或其他黑客,我可以强制从内置的cmd.exe这种行为? 我知道我可以写一个简单的batch file来运行它,但是我想知道是否可以在一个内置的fasion中完成,所以我不必为每个脚本写一个脚本? 更新:其实,我在想,是否有可能为所有'找不到的文件'编写一个默认的处理程序,我可以自动尝试在sh -c执行? 谢谢。

Powershell在windows和unix中正确生成文件path

我想为PowerShell脚本中的文件path生成一个string。 我希望这在Windows和Mac都可以工作。 目前代码被硬编码到窗口中,如path(“\” – > windows,“/” – > unix): $templatep="$CoreRoot\templates\$serviceName" 我改变了这个: $templatep= Join-Path $CoreRoot "templates" $serviceName它在与Powershell 6.0的mac中工作。 但它不能在我的Windows服务器与Powershell 4.我必须做这样的事情: $templatep= Join-Path $CoreRoot -ChildPath "templates" | Join-Path -ChildPath $serviceName 任何想法,为什么这只是在我的Mac? 这是在PowerShell 5或6的新function? 我不喜欢pipe道多个joinpath。 有一个更好的方法吗? 谢谢!

我怎样才能把初始的inputinput进来,然后互动呢?

我希望能够在启动一个交互过程时注入一个初始命令,以便我可以这样做: echo "initial command" | INSERT_MAGIC_HERE some_tool tool> initial command [result of initial command] tool> [now I type an interactive command] 什么不行: 只是pipe道的初始命令不起作用,因为这导致stdin没有连接到terminal 写入/ dev / pts / [number]会将输出发送到terminal,而不是input到进程中,就好像它来自terminal 什么将会有缺点: 做一个命令,分出一个孩子,写入它的标准input,然后转发一切从它自己的标准input。 下行 – terminal控制的东西(如线条与字符模式)将无法正常工作。 也许我可以用代理伪terminal做些什么? 做一个修改后的xterm版本(我正在为这个任务启动一个),用命令行选项在遇到所需的提示string后注入其他命令。 丑陋。 做一个我试图运行的工具的修改版本,以便它接受命令行上的初始命令。 打破标准安装。 (顺便提一句,目前感兴趣的工具是android的adb shell – 我想在手机上打开一个交互式shell,自动运行一个命令,然后进行交互式会话)

关于目录中的单点和双点

每当我们使用这个命令: dir –> in Windows 和 dir -a –> in Unix 我们看到2种点: . .. 出现在目录中。 现在在Stephens Rago的APUE中,它说这些是文件名,有些书上说这些是目录。 无论如何这些点是什么? 如果可能,请提供Windows和Unix的答案。