小编pun*_*r12的帖子

如何在GDB中调试程序时获取程序的环境

我在linux上用GDB调试程序.我正在使用getenvsetenv调用读取和设置环境变量.例如,我setenv("TZ", "UTC", 1);打算为时区设置TZ环境变量.

要检查是否设置了env变量,我正在使用GDB命令show environment.这将打印所有环境变量及其值.但它没有表明TZ被设定.

甚至命令show environment TZEnvironment variable "TZ" not defined.

他们是另一种检查调试程序环境的方法吗?

p *(char *) getenv("TZ")重新确认正确的价值UTC.

c c++ linux gdb environment-variables

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

轻量级GNU readline替代品

我正在寻找一个GNU readline替代品.它有很多功能,但只有几个对我有用,如下所述 -

我正在处理交互式命令提示应用程序(显示提示并接受下一个要运行的用户命令).我想为提示实现一些编辑和历史记录功能.因此,当用户按下UP键时,它应显示最后一次运行命令.此外,如果用户需要编辑任何拼写错误或命令开关等,用户应该能够使用箭头键进行导航.

在Windows上已经存在类似的东西,如果您使用fgetsscanf在cmd提示符下获取输入,它已经保留了历史记录并且还允许您进行编辑.

Linux上有一个很好的选择吗?

c linux shell user-input readline

10
推荐指数
2
解决办法
3664
查看次数

启动 postgres 容器时出错 - mkdir:权限被拒绝

我正在使用以下 docker-compose.yml 启动 postgres 容器

version: '3'
services:
  db:
    image: postgres:latest
    container_name: postgres
    environment:
      POSTGRES_USER: usr
      POSTGRES_PASSWORD: pswd
      POSTGRES_DB: db
      PGDATA: /var/lib/postgresql/data/pgdata
    ports:
        - 5432:5432
    volumes:
        - nfs_cur_dir:/var/lib/postgresql/data

volumes:
  nfs_cur_dir:
    driver: local
    driver_opts:
      type: nfs
      o: "addr=10.15.187.88,rw"
      device: ":/u/uname/home/database"
Run Code Online (Sandbox Code Playgroud)

启动容器时出现以下错误

$sudo ./docker-compose  up db
Starting postgres ... done
Attaching to postgres
postgres    | mkdir: cannot create directory ‘/var/lib/postgresql/data’: Permission denied
postgres exited with code 1
Run Code Online (Sandbox Code Playgroud)

database目录权限为 777

drwxrwxrwx 3 uname grpname 4096 May 5 22:57 database

失败后,我还看到pgdata创建的目录是这样的 …

postgresql nfs docker docker-compose

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