Первое, что я узнал, когда начал писать программное обеспечение для Linux после того, как пришел из опыта разработки под Windows и OS X, это то, что утилиты командной строки следует использовать, а не избегать. Даже для вещей, в которых есть возможность использования C api или утилиты командной строки, часто умнее и надежнее fork
и exec
(НЕ popen
, если только вы не хотите проверить, действительно ли код возврата равен 0!), чем использовать C api.
На самом деле, вызов утилиты командной строки ничем не отличается от вызова C api , если только вам не нужно задействовать каждый последний бит производительности в вашем приложении. Это практически API, где имя функции - это имя утилиты, а параметры - аргументы командной строки.
Итак, в ответ на ваш вопрос: попробуйте exec
passwd
, и он позаботится обо всех ваших проблемах.