小编Vel*_*kan的帖子

管道中的一个进程失败时退出

目标是制作一个简单的非侵入式包装器,将stdin和stdout跟踪到stderr:

#!/bin/bash

tee /dev/stderr | ./script.sh | tee /dev/stderr

exit ${PIPESTATUS[1]}
Run Code Online (Sandbox Code Playgroud)

测试脚本script.sh:

#!/bin/bash

echo asd
sleep 1
exit 4
Run Code Online (Sandbox Code Playgroud)

但是当脚本退出时,它不会终止包装器.可能的解决方案是tee从管道的第二个命令结束第一个:

#!/bin/bash

# Second subshell will get the PID of the first one through the pipe.
# It will be able to kill the whole script by killing the first subshell.

# Create a temporary named pipe (it's safe, conflicts will throw an error).
pipe=$(mktemp -u)
if ! mkfifo $pipe; then
    echo "ERROR: debug tracing pipe creation …
Run Code Online (Sandbox Code Playgroud)

bash

17
推荐指数
2
解决办法
9203
查看次数

如何保留生成的临时文件?

如何强迫它保持像临时工CMakeFiles/cmTC_66ca1.dir/link.txtCMakeFiles/cmTC_66ca1.dir/testCCompiler.c.obj

有一个错误

C编译器无法编译简单的测试程序

但是单独启动命令所需的所有文件都已消失.分析这个很难.

cmake

15
推荐指数
1
解决办法
3581
查看次数

CMake保存剥离的调试信息

通常的做法是使用调试符号进行编译,然后将二进制文件objcopy分成使用版本可执行文件和带有调试信息的文件(然后将其包装到单独的包中或存储在符号服务器上).

如何在CMake中正确分离调试符号?我只看到了一些讨论和不完整的代码示例.

平台是Linux和GCC.

linux gcc cmake objcopy

9
推荐指数
1
解决办法
2408
查看次数

摆脱CMake警告'项目没有使用手动指定的变量'

内部触摸变量的首选方法是CMakeLists.txt什么?

我有一堆类似的ExternalProjects,它们在具有相同变量的循环中调用.有些项目不需要特定的变量.

cmake

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

如何将公钥从JWK转换为OpenSSL的PEM?

RFC中有一个RSA密钥:

https://tools.ietf.org/html/rfc7516#appendix-A.1

 {"kty":"RSA",
  "n":"oahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E-BVvxkeDNjbC4he8rUW
       cJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3S
       psk_ZkoFnilakGygTwpZ3uesH-PFABNIUYpOiN15dsQRkgr0vEhxN92i2a
       sbOenSZeyaxziK72UwxrrKoExv6kc5twXTq4h-QChLOln0_mtUZwfsRaMS
       tPs6mS6XrgxnxbWhojf663tuEQueGC-FCMfra36C9knDFGzKsNa7LZK2dj
       YgyD3JR_MB_4NUJW_TqOQtwHYbxevoJArm-L5StowjzGy-_bq6Gw",
  "e":"AQAB",
  "d":"kLdtIj6GbDks_ApCSTYQtelcNttlKiOyPzMrXHeI-yk1F7-kpDxY4-WY5N
       WV5KntaEeXS1j82E375xxhWMHXyvjYecPT9fpwR_M9gV8n9Hrh2anTpTD9
       3Dt62ypW3yDsJzBnTnrYu1iwWRgBKrEYY46qAZIrA2xAwnm2X7uGR1hghk
       qDp0Vqj3kbSCz1XyfCs6_LehBwtxHIyh8Ripy40p24moOAbgxVw3rxT_vl
       t3UVe4WO3JkJOzlpUf-KTVI2Ptgm-dARxTEtE-id-4OJr0h-K-VFs3VSnd
       VTIznSxfyrj8ILL6MG_Uv8YAu7VILSB3lOW085-4qE3DzgrTjgyQ",
  "p":"1r52Xk46c-LsfB5P442p7atdPUrxQSy4mti_tZI3Mgf2EuFVbUoDBvaRQ-
       SWxkbkmoEzL7JXroSBjSrK3YIQgYdMgyAEPTPjXv_hI2_1eTSPVZfzL0lf
       fNn03IXqWF5MDFuoUYE0hzb2vhrlN_rKrbfDIwUbTrjjgieRbwC6Cl0",
  "q":"wLb35x7hmQWZsWJmB_vle87ihgZ19S8lBEROLIsZG4ayZVe9Hi9gDVCOBm
       UDdaDYVTSNx_8Fyw1YYa9XGrGnDew00J28cRUoeBB_jKI1oma0Orv1T9aX
       IWxKwd4gvxFImOWr3QRL9KEBRzk2RatUBnmDZJTIAfwTs0g68UZHvtc",
  "dp":"ZK-YwE7diUh0qR1tR7w8WHtolDx3MZ_OTowiFvgfeQ3SiresXjm9gZ5KL
       hMXvo-uz-KUJWDxS5pFQ_M0evdo1dKiRTjVw_x4NyqyXPM5nULPkcpU827
       rnpZzAJKpdhWAgqrXGKAECQH0Xt4taznjnd_zVpAmZZq60WPMBMfKcuE",
  "dq":"Dq0gfgJ1DdFGXiLvQEZnuKEN0UUmsJBxkjydc3j4ZYdBiMRAy86x0vHCj
       ywcMlYYg4yoC4YZa9hNVcsjqA3FeiL19rk8g6Qn29Tt0cj8qqyFpz9vNDB
       UfCAiJVeESOjJDZPYHdHY8v1b-o-Z2X5tvLx-TCekf7oxyeKDUqKWjis",
  "qi":"VIMpMYbPf47dT1w_zDUXfPimsSegnMOA1zTaX7aGk_8urY6R8-ZW1FxU7
       AlWAyLWybqq6t16VFd7hQd0y6flUK4SlOydB61gwanOsXGOAOv82cHq0E3
       eL4HrtZkUuKvnPrMnsUUFlfUdybVzxyjz9JF_XyaY14ardLSjf4L_FNY"
 }
Run Code Online (Sandbox Code Playgroud)

我试过了jwk-to-pem:

/sf/answers/2519698331/

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAoahUIoWw0K0usKNuOR6H4wkf4oBUXHTxRvgb48E+BVvxkeDNjbC4
he8rUWcJoZmds2h7M70imEVhRU5djINXtqllXI4DFqcI1DgjT9LewND8MW2Krf3S
psk/ZkoFnilakGygTwpZ3uesH+PFABNIUYpOiN15dsQRkgr0vEhxN92i2asbOenS
ZeyaxziK72UwxrrKoExv6kc5twXTq4h+QChLOln0/mtUZwfsRaMStPs6mS6Xrgxn
xbWhojf663tuEQueGC+FCMfra36C9knDFGzKsNa7LZK2djYgyD3JR/MB/4NUJW/T
qOQtwHYbxevoJArm+L5StowjzGy+/bq6GwIDAQAB
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

还必须用"PUBLIC KEY"替换"RSA PUBLIC KEY".

该命令openssl rsa -inform PEM -pubin给出:

unable to load Public Key
139911798556312:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1197:
139911798556312:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:374:Type=X509_ALGOR
139911798556312:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:697:Field=algor, …
Run Code Online (Sandbox Code Playgroud)

openssl jwt jwk

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

Docker:禁用从远程注册表中提取

当我输入错误的内容时,它会尝试在中央注册表中进行搜索.如何完全禁用它?

是否有清除该URL的选项?

docker

7
推荐指数
1
解决办法
3110
查看次数

本地主机套接字是否需要任何类型的保活?

众所周知,当连接的一侧崩溃时,不可能检测到连接丢失。您必须在 TCP 级别或应用程序协议级别在两端设置 keepalive。

参考:

但是如果对等点在同一台 Linux 机器上并且其中一个出现段错误,另一个是否会通过在下一次读取调用中接收到错误来检测到这种情况?

所有描述符都关闭了,对吧?那不应该正确关闭连接吗?(如果网络出现故障,则是内核故障,无论如何每个人都注定要失败)

我正在尝试获得 FIFO 的这个不错的功能:当您关闭一端时,另一端会收到错误/信号。

c++ sockets linux tcp

6
推荐指数
1
解决办法
875
查看次数

更改动画目标

无法将动画从一个对象切换到另一个对象.id更改(它在日志中打印'world'),但它不传输动画:hello仍然闪烁并且world是静态的.

它只在呼叫时才能正常工作a.restart().当没有功能,只有绑定时,您可以使用onChanged和控制动画停止(完成或暂停)的方式if (running) { complete(); restart(); }.

import QtQuick 2.5

Column {
    ColorAnimation {
        id: a

        target: lab1
        property: "color"

        running: true
        loops: Animation.Infinite
        duration: 500

        from: "black"
        to: "red"
    }

    Text {
        id: lab1

        text: "hello"

        MouseArea {
            anchors.fill: parent
            onClicked: {
                a.target = lab2
                console.log("changed")
                console.log(a.target.text)
            }
        }
    }

    Text {
        id: lab2

        text: "world"
    }
}
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2

6
推荐指数
1
解决办法
6342
查看次数

如何在CPack构建步骤后运行脚本?

我想在'package'目标之后运行一个脚本.add_custom_commandPOST_BUILD不起作用.

make package命令应该构建,打包和运行脚本.不需要单独的命令.

cmake cpack

6
推荐指数
0
解决办法
677
查看次数

CMake将共享库链接到静态库

我正在将AutoTools项目移植到CMake。

AutoTools的作用:

  • 建立一些静态库
  • 建立一些共享库并将静态库链接到共享库
  • 构建可执行文件,将其链接到共享库

我已经设法使用CMake进行了以下操作:

  • 建立一些静态库- add_library(staticfoo <src>)
  • 建立一些共享库- add_library(sharedfoo SHARED <src>)并将它们链接-target_link_libraries(sharedfoo staticfoo)
  • 构建可执行文件,将其链接到共享库- target_link_libraries(exe sharedfoo),但这也再次将静态库拖入其中。

因此,可执行文件的结果链接命令除了共享外还具有静态库。这与AutoTools项目生成的命令不对应。

我已经尝试过了target_link_libraries(sharedfoo PRIVATE staticfoo),但这并不能将符号从静态库获取到共享库的接口中。

如何获得没有“传递”行为的符号?

(以与平台无关的方式)

c c++ cmake

5
推荐指数
1
解决办法
9423
查看次数

标签 统计

cmake ×5

c++ ×2

linux ×2

bash ×1

c ×1

cpack ×1

docker ×1

gcc ×1

jwk ×1

jwt ×1

objcopy ×1

openssl ×1

qml ×1

qt ×1

qtquick2 ×1

sockets ×1

tcp ×1