Да.
#include <unistd.h>
int main(int argc, char* argv[])
{
return unlink(argv[0]);
}
(Проверено и работает.)
Примечание , что если argv[0]
не указывает на двоичный файл (переписанный вызывающей стороной), этоне будет работать.Аналогичным образом, если выполнить символьную ссылку, будет удалена символическая ссылка, а не двоичная.
Кроме того, если файл имеет несколько жестких ссылок, будет удалена только вызываемая ссылка.